iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 24
1
Software Development

從零開始的Laravel RESTful api系列 第 24

Day 24 : 貼文 ( controller -- userPosts ) [ eloquent relationship method ]

  • 分享至 

  • xImage
  •  

接下來做的 userPosts method 就比較特別一些,詳情見以下步驟:

  • 首先確認是否存在該名使用者

    use App\User;
    
    class PostsController extends Controller
    {
        public function userPosts($user_id)
        {
            $user = User::find($user_id);
            if(!is_null($user)){
                //
            }
    
            return response(['message' => 'User not found']);
        }
    
    }
    
  • 將該名使用者的所有貼文秀出來

    完整程式碼
    *PostsController

    namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\Validator;
    use App\Post;
    use App\User;
    
    class PostsController extends Controller
    {
        public function userPosts($user_id)
        {
            $user = User::find($user_id);
            if(!is_null($user)){
                return response(['data' => $user->posts]);
            }
    
            return response(['message' => 'User not found']);
        }
    
    }
    

    其中若只是要將該使用者的所有貼文印出來 ( 一對多 ),方法如下:

    $user->posts;
    

    其實也可以反過來找該貼文所屬的使用者 ( 雖然跟這支 API 無關,但還是說明一下 )

    $post = Post::find(1);
    
    // 取得該使用者的名字
    $name = $post->user->name;
    

    除此之外,找該使用者其中某篇貼文,需注意若還要進一步從所有資料篩選的話,此時的 post 則變成一個 query method,然後做更深入的查找:

    $user->posts()->where('id', 1)->get();
    

Postman 測試

  • 找不到該使用者

    image alt

  • 存在該使用者,並且得到所有貼文

    image alt

下一篇繼續把 update 和 destroy 的部份完成。

參考資料:

  1. Eloquent relationship : https://laravel.com/docs/6.x/eloquent-relationships

上一篇
Day 23 : 貼文 ( Controller -- index & show ) [ eager loading ]
下一篇
Day 25 : 貼文 ( Controller : update & destroy )
系列文
從零開始的Laravel RESTful api30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言